home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / puma.lha / puma / ffaba-m / ffaba.puma < prev    next >
Text File  |  1992-09-25  |  883b  |  45 lines

  1. TRAFO Compiler TREE ProTest PUBLIC goal
  2.  
  3. EXTERN CloseIO HeapUsed StdOutput WriteI WriteNl
  4.  
  5. GLOBAL {
  6.    FROM ProTest IMPORT tProTest, HeapUsed;
  7.    FROM IO IMPORT StdOutput, WriteI, WriteNl, CloseIO;
  8. }
  9.  
  10. PROCEDURE goal ()
  11.  
  12. ?  p (prog (f (f (a, b), a)) => R1);
  13.    p (R1 => R2);
  14.    p (R2 => R3);
  15.    p (R3 => R4);
  16.    p (R4 => R5);
  17.  
  18.    WriteI (StdOutput, HeapUsed, 0); WriteNl (StdOutput);
  19.  
  20.    q (q (q (q (q (prog (f (f (a, b), a))))))) # NIL;
  21.  
  22.    WriteI (StdOutput, HeapUsed, 0); WriteNl (StdOutput); CloseIO ();
  23.    .
  24.  
  25. PROCEDURE p (prog => prog)
  26.  
  27. prog (I) => prog (S) ? e (I, I => S); .
  28.  
  29. PROCEDURE e (E, E => E)
  30.  
  31. f (E1, E2)    , I => f (E1S, E2S) ? e (E1, I => E1S); e (E2, I => E2S); .
  32. n:b        , _ => n ?.
  33. _        , I => I ?.
  34.  
  35.  
  36. FUNCTION q (prog) prog
  37.  
  38. prog (I) RETURN prog (g (I, I)) ?.
  39.  
  40. FUNCTION g (E, E) E
  41.  
  42. f (E1, E2)    , I RETURN f (g (E1, I), g (E2, I)) ?.
  43. n:b        , _ RETURN n ?.
  44. _        , I RETURN I ?.
  45.